package sv.com.action.catalogos;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import net.sf.json.JSONObject;
import sv.com.action.comun.ComunAction;
import sv.com.modelo.catalogos.SubTipoSolicitud;
import sv.com.modelo.catalogos.TipoSolicitud;
import sv.com.modelo.seguridad.rems.Rol;
import sv.com.objetos.auxiliares.Constantes;
import sv.com.objetos.auxiliares.Consulta;
import sv.com.objetos.auxiliares.Listas;
import sv.com.objetos.jqgrid.JQGridJSONModel;
import sv.com.objetos.jqgrid.JQGridRow;
import sv.com.servicio.generico.DaoGenerico;

public class SubtipoSolicitudAction extends ComunAction{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * 
	 */
	
	SubTipoSolicitud sts=new SubTipoSolicitud();
	
	
	public boolean equals(Object arg0) {
		return sts.equals(arg0);
	}

	public Long getIdSubTipoSolicitud() {
		return sts.getIdSubTipoSolicitud();
	}

	public String getNombreSubTipoSolicitud() {
		return sts.getNombreSubTipoSolicitud();
	}

	public String getDescripcionSubTipoSolicitud() {
		return sts.getDescripcionSubTipoSolicitud();
	}

	public String getAccionSubTipoSolicitud() {
		return sts.getAccionSubTipoSolicitud();
	}

	public  Long getIdTipoSolicitud() {
		return sts.getIdTipoSolicitud().getId_tipo_solicitud();
	}

	public int hashCode() {
		return sts.hashCode();
	}

	public void setIdSubTipoSolicitud(Long idSubTipoSolicitud) {
		sts.setIdSubTipoSolicitud(idSubTipoSolicitud);
	}

	public void setNombreSubTipoSolicitud(String nombreSubTipoSolicitud) {
		sts.setNombreSubTipoSolicitud(nombreSubTipoSolicitud);
	}

	public void setDescripcionSubTipoSolicitud(String descripcionSubTipoSolicitud) {
		sts.setDescripcionSubTipoSolicitud(descripcionSubTipoSolicitud);
	}

	public void setAccionSubTipoSolicitud(String accionSubTipoSolicitud) {
		sts.setAccionSubTipoSolicitud(accionSubTipoSolicitud);
	}

	public void setIdTipoSolicitud(Long idTipoSolicitud) {
		TipoSolicitud ts=new TipoSolicitud();
		ts.setId_tipo_solicitud(idTipoSolicitud);
	    sts.setIdTipoSolicitud(ts);
	}

	public String toString() {
		return sts.toString();
	}

	public void mapaDeMetodos(){
		String metodo=getOper();
		if(metodo==null) metodo = CONS;
		if(metodo.equals("cargarSubtipoSolicitud")) cargarSubtipoSolicitud();
		else if(metodo.equals(ELI)) eliminar();
		else if(metodo.equals(AGR)) agregar();
		else if(metodo.equals(MOD)) modificar();
	}
	
	public void modificar(){
		/*HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		List<Rol> lista=null;
		propiedades.add("id_sub_tipo_solicitud");
		valores.add(this.getId());
		tiposConsulta.add(Consulta.IGUAL);
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		try {
			lista=servicioGenerico.cargarTodosV2(SubTipoSolicitud.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			SubTipoSolicitud stsmod = lista.get(0);
			
//			parametros.clear();
//			propiedades.clear();
//			valores.clear();
//			tiposConsulta.clear();
//			propiedades.add("idGerencia");
//			valores.add(this.getGerencia());
//			tiposConsulta.add(Consulta.IGUAL);
//			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
//			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
//			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
//		List<Gerencia> gerList = servicioGenerico.cargarTodosV2(Gerencia.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);			usuMod.setGerencia(gerList.get(0));
		Rolmod.setDescripcionRol(this.getDescripcionRol());
		Rolmod.setNombreRol(this.getNombreRol());
			servicioGenerico.modificar(Rolmod);
		} catch (Exception e) {
			e.printStackTrace();
		}*/
	}

	private void agregar() {
		// TODO Auto-generated method stub
		try {
			servicioGenerico.agregar(sts);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
	}

	private void eliminar() {
		// TODO Auto-generated method stub
		servicioGenerico.eliminar(sts,new Long(this.getId()));
		
	}

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void cargarSubtipoSolicitud(){
		try{
			JQGridJSONModel json= new JQGridJSONModel();
			int pagina = getPage();
			int bloque = getRows();
			
			List<JQGridRow> rows = new ArrayList<JQGridRow>();
			
			Integer totalColumnas = new Integer(0);
			List<SubTipoSolicitud> lista=null;
			
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
//			propiedades.add("tipoUsuario.idTipoUsuario");
//			valores.add(TipoUsuario.ESTUDIANDTE);
//			tiposConsulta.add(Consulta.IGUAL);
			if(get_search()){
				HashMap<String, Object> filtros=obtenerFiltros();
				propiedades.addAll((ArrayList)filtros.get("propiedades"));
				valores.addAll((ArrayList)filtros.get("valores"));
				tiposConsulta.addAll((ArrayList)filtros.get("tiposConsulta"));
				/*if(Cadena.noVacio(getPrimerNombre())){ propiedades.add("primerNombre"); valores.add(getPrimerNombre()); tiposConsulta.add(Consulta.LIKE); }
				if(Cadena.noVacio(getPrimerApellido())){ propiedades.add("primerApellido"); valores.add(getPrimerApellido()); tiposConsulta.add(Consulta.LIKE); }
				if(Cadena.noVacio(getCorreoElectronico())){ propiedades.add("correoElectronico"); valores.add(getCorreoElectronico()); tiposConsulta.add(Consulta.LIKE); }
				*/
			}

			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idSubTipoSolicitud desc");
			
			totalColumnas = servicioGenerico.tamanoTotalListaCargarTodosV2(SubTipoSolicitud.class, parametros);
			lista=servicioGenerico.cargarTodosV2(SubTipoSolicitud.class, parametros, pagina, bloque);
			
			json.setRecords(totalColumnas);
			JQGridRow row = null; 
			List<String> cells = null; 
			for(SubTipoSolicitud objeto:lista){
				row = new JQGridRow(); 
				cells = new ArrayList<String>();
				row.setId(objeto.getIdSubTipoSolicitud());
				cells.add(objeto.getIdSubTipoSolicitud()+"");
				cells.add(objeto.getNombreSubTipoSolicitud());
				cells.add(objeto.getAccionSubTipoSolicitud());
				cells.add(objeto.getIdTipoSolicitud().getId_tipo_solicitud()+"");
				cells.add(objeto.getDescripcionSubTipoSolicitud());
				
				
				row.setCell(cells); 
				rows.add(row);
			}
			json.setPage(String.valueOf(pagina)); 
			json.setTotal(String.valueOf(Constantes.calcularNumeroPaginas(totalColumnas,getRows())));
			json.setRows(rows);
			
			JSONObject o = JSONObject.fromObject(json);
			enviarJsonNavegador(o);
		}catch (Exception e) {
			e.printStackTrace();
		}
		return;
	}
	
}
